package br.uff.busuffweb.service;

import br.uff.busuffweb.DAO.ParadaCircuitoDAO;
import br.uff.busuffweb.model.Circuito;
import br.uff.busuffweb.model.Parada;
import br.uff.busuffweb.model.ParadaCircuito;
import br.uff.busuffweb.util.FabricaDeObjetos;
import br.uff.busuffweb.util.JPAUtil;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author visitante
 */
public class ParadaCircuitoService {

    private static ParadaCircuitoDAO paradaCircuitoDAO;

    static {
        try {
            paradaCircuitoDAO = (ParadaCircuitoDAO) FabricaDeObjetos.getObjetoUnico(ParadaCircuitoDAO.class);
        } catch (Exception ex) {
            Logger.getLogger(ParadaCircuitoService.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public List<ParadaCircuito> getTodos() {
        return paradaCircuitoDAO.getAll();
    }

    public ParadaCircuito getPorId(Long id) {
        return paradaCircuitoDAO.getById(id);
    }

    public List<ParadaCircuito> getPorCircuito(Circuito circuito) {
        return paradaCircuitoDAO.getPorCircuito(circuito);
    }
    
    public List<ParadaCircuito> getPorCircuitoENumero(Circuito circuito, Integer numero) {
        return paradaCircuitoDAO.getPorCircuitoENumero(circuito, numero);
    }

    public List<ParadaCircuito> getPorParada(Parada parada) {
        return paradaCircuitoDAO.getPorParada(parada);
    }
    
    public List<ParadaCircuito> getPorParadaECircuito(Parada parada, Circuito circuito) {
        return paradaCircuitoDAO.getPorParadaECircuito(parada, circuito);
    }
    
    public List<ParadaCircuito> getPorParadaECircuito(Parada parada, Circuito circuito, Integer numero) {
        return paradaCircuitoDAO.getPorParadaECircuitoENumero(parada, circuito, numero);
    }
    
    public List<ParadaCircuito> getPorParadaENumero(Parada parada, Integer numero) {
        return paradaCircuitoDAO.getPorParadaENumero(parada, numero);
    }
    
    public void inserir(ParadaCircuito paradaCircuito) {
        JPAUtil.beginTransaction();

        paradaCircuitoDAO.persist(paradaCircuito);

        JPAUtil.commitTransaction();
    }

    public void removerParadaCircuito(ParadaCircuito paradaCircuito) {
        JPAUtil.beginTransaction();
//        List<AlunoDisciplina> listaAlunoDisciplina = alunoDisciplinaDAO.getPorAluno(aluno);
//        for (AlunoDisciplina alunoDisciplina : listaAlunoDisciplina) {
//            alunoDisciplinaDAO.remove(alunoDisciplina);
//        }
        paradaCircuitoDAO.remove(paradaCircuito);
        JPAUtil.commitTransaction();
    }

//    public void setAlteracao(Aluno alunoMod) {
//        JPAUtil.beginTransaction();
//        circuitoDAO.merge(alunoMod);
//        JPAUtil.commitTransaction();
//    }
//
//    public Aluno getPorIdComDisciplinas(Long id) {
//        return circuitoDAO.getPorIdComDisciplinas(id);
//    }
}
